package com.pengtu.gsj.service.impl.yh;

import java.text.ParseException;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.pengtu.gsj.dao.base.Page;
import com.pengtu.gsj.dao.base.QueryFilter;
import com.pengtu.gsj.dao.base.QueryFilter.MatchType;
import com.pengtu.gsj.dao.yh.RoadRectificationDao;
import com.pengtu.gsj.entity.yh.RoadRectification;
import com.pengtu.gsj.service.yh.RoadRectificationService;
import com.pengtu.gsj.utils.DateUtils;

@Service
@Transactional
public class RoadRectificationServiceImpl implements RoadRectificationService {
	
	@Autowired
	private RoadRectificationDao roadRectificationDao;

	@Override
	public List<RoadRectification> getRoadRectifications(QueryFilter queryFilter) {
		return roadRectificationDao.find(queryFilter);
	}

	@Override
	public RoadRectification getRoadRectification(String id) {
		return roadRectificationDao.get(id);
	}

	@Override
	public void saveRoadRectification(RoadRectification roadRectification) {
		roadRectificationDao.save(roadRectification);
	}

	@Override
	public Page<RoadRectification> findRoadRectifications(
			Page<RoadRectification> page, QueryFilter queryFilter) {
		return roadRectificationDao.findPage(page, queryFilter);
	}

	@Override
	public void deleteRoadRectification(String id) {
		roadRectificationDao.delete(id);
	}

	@Override
	public void deleteRoadRectification(RoadRectification roadRectification) {
		roadRectificationDao.delete(roadRectification);
	}

	/**
	 * 
	 * getCheckRoadRectifications:
	 * 适用:国省检检查数据时   根据时间获取满足要求的数据
	 * @param startTime
	 * @param endTime
	 * @return
	 * @throws ParseException 
	 * @exception 
	 * @since  1.0.0
	 */
	@Override
	public List<RoadRectification> getCheckRoadRectifications(String startTime,
			String endTime) throws ParseException {
		QueryFilter queryFilter = new QueryFilter();
		if (StringUtils.isNotEmpty(startTime) && DateUtils.isDate(startTime)) {
			queryFilter.addFilter("year",startTime, MatchType.GE);
		}
		if (StringUtils.isNotEmpty(endTime) && DateUtils.isDate(endTime)) {
			queryFilter.addFilter("year",  endTime, MatchType.LE);
		}
		return roadRectificationDao.find(queryFilter);
	}

	/**
	 * 
	 * isYearUnique:
	 * 适用:日常监管中新增路段改造数据时，动态判断年份数据是否唯一
	 * @param startTime
	 * @param endTime
	 * @return
	 * @throws ParseException 
	 * @exception 
	 * @since  1.0.0
	 */
	@Override
	public boolean isYearUnique(String year, String entityId) {
		List<RoadRectification> list = roadRectificationDao.findBy("year", year);
		//当实体类id不存在时  则是在新增新的数据  只需要通过填写的year判断数据库是否存在即可
		if (StringUtils.isEmpty(entityId)) {
			if (list.size() > 0) {
				return false;
			} else {
				return true;
			}
		} else {
			//当实体类对象id存在时  则是在修改数据  需要判断新增的年份数据和对象的数据是否匹配  如果匹配则说明没有修改
			RoadRectification roadRectification = roadRectificationDao.get(entityId);
			if ((list.size() > 0 && roadRectification.getYear().equals(year)) || list.size() <= 0) {
				return true;
			} else {
				return false;
			}
		}
	}

}
